package com.netrust.cmsx.core.service;

import java.io.Serializable;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import com.netrust.cmsx.core.persist.TreeDao;
import com.netrust.cmsx.core.persist.TreeEntity;

/**
 * Service基类
 */
public abstract class TreeService<T extends TreeEntity<T>,ID extends Serializable,D extends TreeDao<T, ID>> extends CrudService<T,ID,D>{
	/**
	 * 持久层对象
	 */
	@Autowired
	protected D dao;
	
	/**
	 * 树
	 * @return
	 */
	public abstract List<T> findTree();
	
	/**
	 * 节点下的树
	 * @param entity
	 * @return
	 */
	public abstract List<T> findTree(T entity);
	
	/**
	 * 查询节点下的所有子节点
	 * @param entity
	 * @param func
	 * @return
	 */
	public abstract List<T> findChilds(T entity,String func);
	
	/**
	 * 查询子节点的所有父节点
	 * @param entity
	 * @param func
	 * @return
	 */
	public abstract List<T> findParents(T entity, String func) ;
	
	
	/**
	 * 预留接口，用户更新子节前调用
	 * @param childEntity
	 */
	public List<T> getChildren(T entity) {
		//dao.testRun();
		return dao.findChildByParent(entity);
	}



}
